/*
 * @Author: your name
 * @Date: 2021-02-16 12:40:22
 * @LastEditTime: 2021-02-19 00:07:18
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \demo_2021021601\driver\at32F4xx\bsp_tmr6.c
 */
/*
*********************************************************************************************************
*
*	模块名称 : TMR6驱动模块
*	文件名称 : bsp_tmr6.c
*	版    本 : v1.0.00
*	说    明 : 
*
*********************************************************************************************************
*/

#include "bsp.h"

/* 系统时间标记 */

/*
*********************************************************************************************************
*	函 数 名: bsp_InitTmr6
*	功能说明: TMR6初始化
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void bsp_InitTmr6(void)
{
    TMR_TimerBaseInitType TMR_TMReBaseStructure;
    NVIC_InitType NVIC_InitStructure;
    uint8_t ucPrescalerValue;

    /* TMR6 clock enable */
    RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_TMR6, ENABLE);
    /* Compute the prescaler value
       TMR6 counter clock at 1 MHz */
    ucPrescalerValue = (uint8_t)(SystemCoreClock / 1000000) - 1;
    /* TMR6 base configuration */
    TMR_TimeBaseStructInit(&TMR_TMReBaseStructure);
    TMR_TMReBaseStructure.TMR_Period = 10000;
    TMR_TMReBaseStructure.TMR_DIV = 0;
    TMR_TMReBaseStructure.TMR_ClockDivision = 0;
    TMR_TMReBaseStructure.TMR_CounterMode = TMR_CounterDIR_Up;
    TMR_TimeBaseInit(TMR6, &TMR_TMReBaseStructure);

    /* Prescaler configuration */
    TMR_DIVConfig(TMR6, ucPrescalerValue, TMR_DIVReloadMode_Immediate);

    /* TMR IT enable */
    //TMR_INTConfig(TMR6, TMR_INT_Overflow, ENABLE);

    /* TMR6 enable counter */
    TMR_Cmd(TMR6, ENABLE);

    /* Enable the TMR6 global Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = TMR6_GLOBAL_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);
    my_printf("enable tim6 1\r\n");
}

/*
*********************************************************************************************************
*	函 数 名: TMR6_GLOBAL_IRQHandler
*	功能说明: TIMR6中断
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void TMR6_GLOBAL_IRQHandler(void)
{
    static uint8_t uConst = 0;
    my_printf("entry TMR6_GLOBAL_IRQHandler\r\n");
    if (TMR_GetINTStatus(TMR6, TMR_INT_Overflow) != RESET)
    {
        TMR_ClearITPendingBit(TMR6, TMR_INT_Overflow);
        TMR_INTConfig(TMR6, TMR_INT_Overflow, DISABLE);
        uConst++;
        if (uConst)
        {
            uConst = 0;
            //ucSys10msFlag = 1;
        }
    }
}
/********************************************* End of file **********************************************/
